package com.example.mardan_demo1.controller;


import com.example.mardan_demo1.pojo.PageBean;
import com.example.mardan_demo1.pojo.Result;
import com.example.mardan_demo1.pojo.Yaopin;

import com.example.mardan_demo1.pojo.hzp.HuaZhuangPinFenLei;
import com.example.mardan_demo1.pojo.hzp.HuaZhuangPinJianYanXiangMu;
import com.example.mardan_demo1.pojo.hzp.HzpInfo;
import com.example.mardan_demo1.service.YaopinService;
import com.example.mardan_demo1.utils.ThreadLocalUtil;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/sj-yaopin")
public class YaopinController {

    @Autowired
    private YaopinService yaopinService;

    /**
     * 药品-新增 或者 暂存
     * ApiDes: 客户新增或者暂存，
     * @param yaopin
     * @return 响应描述：
     */

    @PostMapping("/add-or-stag")
    public Result add( @Valid Yaopin yaopin) {
        return yaopinService.add(yaopin);
    }
    
    /*
     * @Description: 获取药品列表，该接口为客户专用 需要验证用户权限是否为customer
     * @Author:  买尔旦江
     * @date:  2024/11/21 10:55
     */
    
    @PostMapping("/yaopinlist")
    public Result<PageBean<Yaopin>> list( Integer pageNum,
                                         Integer pageSize,
                                         String yang_pin_ming_cheng) {
        return yaopinService.list(pageNum, pageSize, yang_pin_ming_cheng);
    }
    /**
     * ApiName:样品名称候选搜索框
     * ApiDes:
     * @param name String 检品名称
     * @param jianPinLeiBie 检品类别，Y|Q|H
     * @return 响应描述：返回10个与样品名称类似的样品名称给客户选择
     */
    @PostMapping("/houxuanlist")
    public Result houxuanlist(String name, String jianPinLeiBie) {
        return yaopinService.houxuanlinst(name, jianPinLeiBie);
    }
    /**
     * ApiName:获取检验项目，根据检品登记id获取检验项目
     * ApiDes:
     * @param jianPinDengJiId
     * @return 响应描述：
     */
    @PostMapping("/get-jian-yan-xiang-mu")
    public Result getJianYanXiangMuByJianPinId(String jianPinDengJiId){
        return  yaopinService.getJianYanXiangMuByJianPinId(jianPinDengJiId);
    }
    /**
     * ApiName: 新增化妆品分类
     * ApiDes:
     * @param fenlei
     * @return 响应描述：
     */
    @PostMapping("/hzp-fenlei-add")
    public Result hzpFenLeiAdd(HuaZhuangPinFenLei fenlei) {
        return yaopinService.hzpFenLeiAdd(fenlei);
    }
    /**
     * ApiName:获取化妆品分类列表
     * ApiDes:
     * @param pageSize integer页面大小
     * @param PageNum  integer页码
     * @return 响应描述：
     */
    @PostMapping("/hzp-fenlei-list")
    public Result hzpFenLeiList(Integer pageSize, Integer PageNum){
        return yaopinService.hzpFenLeiList(pageSize, PageNum);
    }
    /**
     * ApiName:获取化妆品项目列表
     * ApiDes:
     * @param xiangMuMingCheng
     * @param pageSize integer
     * @param pageNum integer
     * @return 响应描述：
     */
    @PostMapping("/hzp-xiangmu-list")
    public Result hzpXiangMuList(String xiangMuMingCheng,
                                 Integer pageSize,
                                 Integer pageNum){
        return yaopinService.hzpXiangMuList(xiangMuMingCheng, pageSize, pageNum);
    }

    /**
     * ApiName:新增化妆品项目
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/hzp-xiangmu-add")
    public Result hzpXiangMuAdd(@Valid HuaZhuangPinJianYanXiangMu jianYanXiangMu){
        return yaopinService.hzpXiangMuAdd(jianYanXiangMu);
    }
    /**
     * ApiName:化妆品检验项目和样品类别关联
     * ApiDes:
     * @param xiangMuId 项目id
     * @param leiBieIds array of integers 大类id数组
     * @return 响应描述：
     */
    @PostMapping("/hzp-xiangmu-guanlian-dalei")
    public Result hzpXiangMuGuanLianDaLei(@NotNull Integer xiangMuId,
                                          @NotNull Integer[] leiBieIds) {
        return yaopinService.hzpXiangMuGuanLianDaLei(xiangMuId, leiBieIds);
    }
    /**
     * ApiName:获取项目列表附带大类
     * ApiDes:返回项目列表，项目列表附带所属的大类
     * @param
     * @return 响应描述：
     */
    @PostMapping("/hzp-xiangmulist-daiDalei")
    public Result hzpXiangMuListWithDaLei(String xiangMuMingCheng,
                                          @NotNull Integer pageSize,
                                          @NotNull Integer pageNum) {
        return yaopinService.hzpXiangMuListWithDaLei(xiangMuMingCheng, pageSize, pageNum);
    }
    /**
     * ApiName:根据项目大类获取能检验的项目
     * ApiDes:
     * @param fenLeiId integer 大类id
     * @param pageSize integer
     * @param pageNum integer
     * @return 响应描述：
     */
    @PostMapping("/hzp-getxiangmulist-bydalei")
    public Result hzpGetXiangMuListByDaleiId(@NotNull Integer fenLeiId,
                                             @NotNull Integer pageSize,
                                             @NotNull Integer pageNum) {
        return yaopinService.hzpGetXiangMuListByDaleiId(fenLeiId, pageSize, pageNum);
    }
    /**
     * ApiName:客户新增化妆品
     * ApiDes:
     * @param hzpInfo
     * @return 响应描述：
     */
    @PostMapping("/hzp-xinzeng")
    public Result hzpXinZengYangPin(HzpInfo hzpInfo, String zhuangTai) {
        return  yaopinService.hzpXinZengYangPin(hzpInfo, zhuangTai);
    }
    /**
     * ApiName:客户获取自己的化妆品列表
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/kh-hzp-list")
    public Result khGetHzpList(String yangPinMingCheng,
                               Integer pageSize,
                               Integer pageNum){
        return yaopinService.khGetHzpList(yangPinMingCheng, pageSize, pageNum);
    }
    /**
     * ApiName:管理员获取化妆品列表
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/admin-hzp-list")
    public Result adminGetHzpList(String yangPinMingCheng,
                                 Integer pageSize,
                                 Integer pageNum){
        return yaopinService.adminGetHzpList(yangPinMingCheng, pageSize, pageNum);
    }
    /**
     * ApiName:管理员根据样品id获取化妆品样品详情
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/admin-hzp-detail")
    public Result adminGetHzpDetailById(Integer id) {
        return  yaopinService.adminGetHzpDetailById(id);
    }
    /**
     * ApiName:管理员根据项目ids获取项目详情
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/admin-hzp-xiangmu-by-ids")
    public Result adminGetHzpXiangMuByIds(  String ids) {
        int[] idsArray =  ThreadLocalUtil.parseStringToIntArray(ids);
        return  yaopinService.adminGetHzpXiangMuByIds(idsArray);
//        return Result.success(idsArray);
    }
    /**
     * ApiName:管理员受理化妆品
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/admin-hzp-shouli")
    public Result adminShouLiHzp(Integer yangPinId,
                                 String caoZuoLeiXing,
                                 String chuLiYiJian,
                                 String jianPinBianHao){
        return  yaopinService.adminShouLiHzp(yangPinId, caoZuoLeiXing, chuLiYiJian, jianPinBianHao);
    }
    /**
     * ApiName:客户更新化妆品样品信息
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/kehu-update-hzp-info")
    public Result kehuUpdateHzpInfo(HzpInfo hzpInfo){
        return yaopinService.kehuUpdateHzpInfo(hzpInfo);
    }
    /**
     * ApiName:化妆品查看进度根据id
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/hzp-jindu-byId")
    public Result getHzpJinDuById(Integer id) {
        return yaopinService.getHzpJinDuById(id);
    }
    /**
     * ApiName:管理员驳回化妆品检品受理
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/admin-hzp-shouli-bohui")
    public Result adminBoHuiHzpShouLi(Integer yangPinId,
                                      String chuLiYiJian) {
        return yaopinService.adminBoHuiHzpShouLi(yangPinId, chuLiYiJian);
    }
    /**
     * ApiName:管理员上传报告书附件
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/admin-upload-bgs-fujian")
    public Result adminUploadBgsFujian(Integer yangPinId,
                                      String baoGaoShuFuJian ) {
        return yaopinService.adminUploadBgsFujian(yangPinId, baoGaoShuFuJian);
    }
    /**
     * ApiName:客户提交暂存的检品
     * ApiDes:
     * @param
     * @return 响应描述：
     */
    @PostMapping("/kh-tijiao-zancun-xinxi")
    public Result keHuTiJiao(HzpInfo hzpInfo) {
        return yaopinService.keHuTiJiao(hzpInfo);
    }











}
